package ig.ejb.metrica.da.session;


import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;

/**
 * The Data Transfer Object class.
 * Created 13/12/2006 06:57:42 PM
 * @author jsanchez
 */
public class RelacionaccionessubcuentasDTO implements java.io.Serializable {
    
    private java.lang.Long idformato;
    private java.lang.String unidadcaptura;
    private java.lang.String subcuenta;
    private java.lang.Long idaccion;
    private Integer IDORIGENDATO;

    private boolean dirty = false; //dirty flag
    
    public RelacionaccionessubcuentasDTO(){
    }
    
    public RelacionaccionessubcuentasDTO(java.lang.Long idformato, java.lang.String unidadcaptura, java.lang.String subcuenta, java.lang.Long idaccion, Integer IDORIGENDATO){
        this.idformato = idformato;
        this.unidadcaptura = unidadcaptura;
        this.subcuenta = subcuenta;
        this.idaccion = idaccion;
        this.IDORIGENDATO=IDORIGENDATO;
    }
    
    private void setDirty(){
        dirty = true;
    }
    
    public boolean isDirty(){
        return dirty;
    }
    
    public void resetDirty(){
        dirty = false;
    }
    
    public java.lang.Long getIdformato(){ return idformato; }
    public void setIdformato(java.lang.Long idformato){
        this.idformato = idformato;
        setDirty();
    }
    
    public java.lang.String getUnidadcaptura(){ return unidadcaptura; }
    public void setUnidadcaptura(java.lang.String unidadcaptura){
        this.unidadcaptura = unidadcaptura;
        setDirty();
    }
    
    public java.lang.String getSubcuenta(){ return subcuenta; }
    public void setSubcuenta(java.lang.String subcuenta){
        this.subcuenta = subcuenta;
        setDirty();
    }
    
    public java.lang.Long getIdaccion(){ return idaccion; }
    public void setIdaccion(java.lang.Long idaccion){
        this.idaccion = idaccion;
        setDirty();
    }
    
    
    // populate DTO from Object
    public void populate(Object o) {
        Object[] obj=new Object[0];
        Method[] methods = o.getClass().getMethods();
        for (int i = 0; i < methods.length; i++) {
            try{
                String methodName = methods[i].getName();
                if ((methodName.startsWith("get") ||
                        methodName.startsWith("is"))
                        && Modifier.isPublic(methods[i].getModifiers())
                        && methods[i].getParameterTypes().length == 0
                        && !methodName.equals("getClass")) {
                    String setMethodName = methodName.replaceFirst(methodName.startsWith("get")?"get":"is","set");
                    getClass().getMethod(setMethodName,new Class[]{methods[i].getReturnType()}).
                            invoke(this, new Object[]{methods[i].invoke(o,obj)});
                }
            }catch(IllegalAccessException ilE){
                ilE.printStackTrace();
            }catch(InvocationTargetException invE){
                invE.printStackTrace();
            }catch(NoSuchMethodException noE){
                // Don't find setMethod for field
            }
        }
    }
    
    
    /**
     * @see java.lang.Object#toString()
     */
    public String toString(){
        return getClass().getName() + "[" +
                "idformato: " + this.idformato + ", " +
                "unidadcaptura: " + this.unidadcaptura + ", " +
                "subcuenta: " + this.subcuenta + ", " +
                "idaccion: " + this.idaccion + "]";
    }
    
    /**
     * @see java.lang.Object#equals(java.lang.Object)
     */
    public boolean equals(java.lang.Object otherOb) {
        
        if (this == otherOb) {
            return true;
        }
        if (!(otherOb instanceof ig.ejb.metrica.da.session.RelacionaccionessubcuentasDTO)) {
            return false;
        }
        ig.ejb.metrica.da.session.RelacionaccionessubcuentasDTO other = (ig.ejb.metrica.da.session.RelacionaccionessubcuentasDTO) otherOb;
        return (
                
                (idformato==null?other.idformato==null:idformato.equals(other.idformato))
                &&
                (unidadcaptura==null?other.unidadcaptura==null:unidadcaptura.equals(other.unidadcaptura))
                &&
                (subcuenta==null?other.subcuenta==null:subcuenta.equals(other.subcuenta))
                &&
                (idaccion==null?other.idaccion==null:idaccion.equals(other.idaccion))
                
                );
    }
    
    /**
     * @see java.lang.Object#hashCode()
     */
    public int hashCode() {
        return (
                
                (idformato==null?0:idformato.hashCode())
                ^
                (unidadcaptura==null?0:unidadcaptura.hashCode())
                ^
                (subcuenta==null?0:subcuenta.hashCode())
                ^
                (idaccion==null?0:idaccion.hashCode())
                
                );
    }

    public Integer getIDORIGENDATO() {
        return IDORIGENDATO;
    }

    public void setIDORIGENDATO(Integer IDORIGENDATO) {
        this.IDORIGENDATO = IDORIGENDATO;
    }
    
}
